/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package controldepuntos.clases;

import controldepuntos.pantallas.ARCatalogoFalta;
import java.awt.List;
import java.io.Serializable;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.AbstractCollection;
import java.util.ArrayList;
import java.util.Collection;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.swing.JOptionPane;
import org.eclipse.persistence.internal.expressions.SQLStatement;

/**
 *
 * @author Víctor
 */
@Entity
@Table(name = "tc_reglamento")
@NamedQueries({
    @NamedQuery(name = "TcReglamento.findAll", query = "SELECT t FROM TcReglamento t")})
public class TcReglamento implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @Basic(optional = false)
    @Column(name = "id_reglamento")
    private Integer idReglamento;
    @Basic(optional = false)
    @Column(name = "descripcion")
    private String descripcion;
    @Column(name = "detalles")
    private String detalles;
    @Basic(optional = false)
    @Column(name = "puntos")
    private int puntos;

    
    public TcReglamento() {
    }

    public TcReglamento(Integer idReglamento) {
        this.idReglamento = idReglamento;
    }

    public TcReglamento(Integer idReglamento, String descripcion, int puntos) {
        this.idReglamento = idReglamento;
        this.descripcion = descripcion;
        this.puntos = puntos;
    }

    public Integer getIdReglamento() {
        return idReglamento;
    }

    public void setIdReglamento(Integer idReglamento) {
        this.idReglamento = idReglamento;
    }

    public String getDescripcion() {
        return descripcion;
    }

    public void setDescripcion(String descripcion) {
        this.descripcion = descripcion;
    }

    public String getDetalles() {
        return detalles;
    }

    public void setDetalles(String detalles) {
        this.detalles = detalles;
    }

    public int getPuntos() {
        return puntos;
    }

    public void setPuntos(int puntos) {
        this.puntos = puntos;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (idReglamento != null ? idReglamento.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof TcReglamento)) {
            return false;
        }
        TcReglamento other = (TcReglamento) object;
        if ((this.idReglamento == null && other.idReglamento != null) || (this.idReglamento != null && !this.idReglamento.equals(other.idReglamento))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "controldepuntos.clases.TcReglamento[ idReglamento=" + idReglamento + " ]";
    }
    
    public ArrayList<TcReglamento> getReglamentoList(){
        try{
            //Nota de prueba
            Statement stm;
            ArrayList<TcReglamento> reglamentoList=new ArrayList<>();
            ResultSet rs;
            String SQL="SELECT id_reglamento, descripcion, detalles FROM tc_reglamento";
            DataBase d = new DataBase();
            Connection con = d.conectar();
            stm=con.createStatement();
            rs=stm.executeQuery(SQL);
            while(rs.next()){
                TcReglamento tcReglamento = new TcReglamento();
                tcReglamento.idReglamento = rs.getInt("id_reglamento");
                tcReglamento.descripcion = rs.getString("descripcion");
                tcReglamento.detalles = rs.getString("detalles");
                reglamentoList.add(tcReglamento);
            }
            if(!reglamentoList.isEmpty()){
                return reglamentoList;
            }else{
                return null;
            }
        }catch(Exception ex){
            JOptionPane.showMessageDialog(AdministradorVentanas.pantallaModificarIncidencia, ex.getMessage()+"Error in getReglamentoList()");
            return null;
        }
        
    }
     public ResultSet getReglamentoListResultSet(){
        try{
            Statement stm;
            ResultSet rs;
            String SQL="SELECT id_reglamento, descripcion, detalles, puntos FROM tc_reglamento";
            DataBase d = new DataBase();
            Connection con = d.conectar();
            stm=con.createStatement();
            rs=stm.executeQuery(SQL);
            //return rs;
            if(rs!=null){
                return rs;
            }
            return null;
        }catch(Exception ex){
            JOptionPane.showMessageDialog(AdministradorVentanas.pantallaModificarIncidencia, ex.getMessage()+"Error in getReglamentoListResultSet()","Error",JOptionPane.ERROR_MESSAGE);
            return null;
        }
        
    }
     public void insertarReglamento(TcReglamento nuevoReglamento){
         try{
            Statement stm;
            Connection con;
            String SQL="INSERT INTO tc_reglamento (descripcion, detalles, puntos) values "
                    + "('"+nuevoReglamento.descripcion+"','"+nuevoReglamento.detalles+"',"+nuevoReglamento.puntos+")";
            //JOptionPane.showMessageDialog(null, SQL);
            DataBase db = new DataBase();
            con=db.conectar();
            stm=con.createStatement();
            int correcto = stm.executeUpdate(SQL);
            if(correcto>0){
                JOptionPane.showMessageDialog(AdministradorVentanas.pantallaCatalogoFalta, "Reglamento agregado correctamente");
                //Resetear pantalla de cátalogo de faltas para que se actualice el grid
                AdministradorVentanas.ocultarPantallaCatalogoFalta();
                AdministradorVentanas.pantallaCatalogoFalta=null;
                AdministradorVentanas.mostrarPantallaCatalogoFalta();
            }
         }catch(Exception ex){
             JOptionPane.showMessageDialog(AdministradorVentanas.pantallaCatalogoFalta, "Lo sentimos, Ocurrió un error."+ex.getMessage());
         }
         
     }
     public void eliminarReglamento(TcReglamento reglamentoAEliminar){
         try{
            Statement stm;
            Connection con;
            String SQL="DELETE FROM tc_reglamento WHERE id_reglamento="+reglamentoAEliminar.idReglamento;
            //JOptionPane.showMessageDialog(null, SQL);
            DataBase db = new DataBase();
            con=db.conectar();
            stm=con.createStatement();
            int correcto = stm.executeUpdate(SQL);
            if(correcto>0){
                JOptionPane.showMessageDialog(AdministradorVentanas.pantallaCatalogoFalta, "Elemento eliminado correctamente");
                AdministradorVentanas.ocultarPantallaCatalogoFalta();
                AdministradorVentanas.pantallaCatalogoFalta=null;
                AdministradorVentanas.mostrarPantallaCatalogoFalta();
            }
            
            
         }
         catch(SQLException ex){
             JOptionPane.showMessageDialog(AdministradorVentanas.pantallaCatalogoFalta, "No es posible eliminar el elemento porque es usado actualmente","Error",JOptionPane.ERROR_MESSAGE);
         }
         catch(Exception ex){
             JOptionPane.showMessageDialog(AdministradorVentanas.pantallaCatalogoFalta, "Lo sentimos, Ocurrió un error."+ex.getMessage(),"Error",JOptionPane.ERROR_MESSAGE);
         }
     }
     public TcReglamento seleccionarPorId(String id){
         try{
            TcReglamento reglamentoEncontrado=null;
            Statement stm;
            Connection con;
            String SQL="SELECT descripcion, detalles, puntos FROM tc_reglamento WHERE id_reglamento="+id;
            ResultSet rs;
            //JOptionPane.showMessageDialog(null, SQL);
            DataBase db = new DataBase();
            con=db.conectar();
            stm=con.createStatement();
            rs = stm.executeQuery(SQL);
            while(rs.next()){
                reglamentoEncontrado=new TcReglamento();
                reglamentoEncontrado.descripcion=rs.getString("descripcion");
                reglamentoEncontrado.detalles=rs.getString("detalles");
                reglamentoEncontrado.puntos=rs.getInt("puntos");
            }
            return reglamentoEncontrado;
            
         }catch(Exception ex){
             JOptionPane.showMessageDialog(AdministradorVentanas.pantallaCatalogoFalta, "Lo sentimos, Ocurrió un error. TcReglamento.seleccionarPorId"+ex.getMessage()+ex.getStackTrace());
             return null;
         }
     }
     public void modificarReglamento(TcReglamento reglamentoAModificar){
         try{
            Statement stm;
            Connection con;
            String SQL="UPDATE tc_reglamento set descripcion='"+reglamentoAModificar.descripcion
                       +"', detalles='"+reglamentoAModificar.detalles+"', puntos="+reglamentoAModificar.puntos
                       +" WHERE id_reglamento="+reglamentoAModificar.idReglamento;
            //JOptionPane.showMessageDialog(null, SQL);
            DataBase db = new DataBase();
            con=db.conectar();
            stm=con.createStatement();
            int correcto = stm.executeUpdate(SQL);
            if(correcto>0){
                JOptionPane.showMessageDialog(AdministradorVentanas.pantallaCatalogoFalta, "Reglamento modificado correctamente");
                AdministradorVentanas.ocultarPantallaCatalogoFalta();
                AdministradorVentanas.pantallaCatalogoFalta=null;
                AdministradorVentanas.mostrarPantallaCatalogoFalta();
            }
         }catch(Exception ex){
             JOptionPane.showMessageDialog(AdministradorVentanas.pantallaCatalogoFalta, "Lo sentimos, Ocurrió un error."+ex.getMessage());
         }
     }
     
     public ArrayList<TcReglamento> seleccionarTodo(){
         try{
            ArrayList<TcReglamento> listaReglamentos=new ArrayList<>();
            Statement stm;
            Connection con;
            String SQL="SELECT id_reglamento, descripcion FROM tc_reglamento;";
            ResultSet rs;
            //JOptionPane.showMessageDialog(null, SQL);
            DataBase db = new DataBase();
            con=db.conectar();
            stm=con.createStatement();
            rs = stm.executeQuery(SQL);
            while(rs.next()){
                TcReglamento reglamentoEncontrado=new TcReglamento();
                reglamentoEncontrado.setIdReglamento(rs.getInt("id_reglamento"));
                reglamentoEncontrado.descripcion=rs.getString("descripcion");
                listaReglamentos.add(reglamentoEncontrado);
            }
            return listaReglamentos;
            
         }catch(Exception ex){
             JOptionPane.showMessageDialog(AdministradorVentanas.pantallaCatalogoFalta, "Lo sentimos, Ocurrió un error. TcReglamento.seleccionarPorId"+ex.getMessage()+ex.getStackTrace(),"Error",JOptionPane.ERROR_MESSAGE);
             return null;
         }
     }
    
}
